#Boa:Frame:CambioPrecio

import wx
import wx.grid
import consultasBD
import utiles
import sincronizar_tabla
import os
from decimal import Decimal

def create(parent):
    return CambioPrecio(parent)

[wxID_CAMBIOPRECIO, wxID_CAMBIOPRECIOBUTTON1, wxID_CAMBIOPRECIOBUTTON2, 
 wxID_CAMBIOPRECIOBUTTON3, wxID_CAMBIOPRECIOBUTTON4, wxID_CAMBIOPRECIOBUTTON5, 
 wxID_CAMBIOPRECIOGRID1, wxID_CAMBIOPRECIOGRID2, wxID_CAMBIOPRECIOPANEL1, 
 wxID_CAMBIOPRECIOSTATICTEXT1, wxID_CAMBIOPRECIOTEXTCTRL1, 
] = [wx.NewId() for _init_ctrls in range(11)]

class CambioPrecio(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_CAMBIOPRECIO, name='CambioPrecio',
              parent=prnt, pos=wx.Point(169, 122), size=wx.Size(925, 428),
              style=wx.DEFAULT_FRAME_STYLE, title='Cambios de Precios')
        self.SetClientSize(wx.Size(917, 401))

        self.panel1 = wx.Panel(id=wxID_CAMBIOPRECIOPANEL1, name='panel1',
              parent=self, pos=wx.Point(0, 0), size=wx.Size(917, 401),
              style=wx.TAB_TRAVERSAL)

        self.grid1 = wx.grid.Grid(id=wxID_CAMBIOPRECIOGRID1, name='grid1',
              parent=self.panel1, pos=wx.Point(8, 8), size=wx.Size(264, 328),
              style=0)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_CHANGE,
              self.OnGrid1ActualizaCelda)

        self.button1 = wx.Button(id=wxID_CAMBIOPRECIOBUTTON1,
              label='Guarda e Imprime', name='button1', parent=self.panel1,
              pos=wx.Point(352, 376), size=wx.Size(128, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnBotonGuardar,
              id=wxID_CAMBIOPRECIOBUTTON1)

        self.button2 = wx.Button(id=wxID_CAMBIOPRECIOBUTTON2, label='Imprimir',
              name='button2', parent=self.panel1, pos=wx.Point(640, 376),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnBotonImprimir,
              id=wxID_CAMBIOPRECIOBUTTON2)

        self.button3 = wx.Button(id=wxID_CAMBIOPRECIOBUTTON3, label='Salir',
              name='button3', parent=self.panel1, pos=wx.Point(840, 376),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnBotonSalir,
              id=wxID_CAMBIOPRECIOBUTTON3)

        self.grid2 = wx.grid.Grid(id=wxID_CAMBIOPRECIOGRID2, name='grid2',
              parent=self.panel1, pos=wx.Point(272, 8), size=wx.Size(640, 344),
              style=0)
        self.grid2.EnableEditing(False)
        self.grid2.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
              self.OnGrid2DobleClickIzquierdo)
        self.grid2.Bind(wx.grid.EVT_GRID_CELL_RIGHT_DCLICK,
              self.OnGrid2DobleClickDerecha)

        self.button4 = wx.Button(id=wxID_CAMBIOPRECIOBUTTON4, label='Limpiar',
              name='button4', parent=self.panel1, pos=wx.Point(760, 376),
              size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnBotonLimpiar,
              id=wxID_CAMBIOPRECIOBUTTON4)

        self.staticText1 = wx.StaticText(id=wxID_CAMBIOPRECIOSTATICTEXT1,
              label='Total etiquetas', name='staticText1', parent=self.panel1,
              pos=wx.Point(8, 344), size=wx.Size(72, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_CAMBIOPRECIOTEXTCTRL1,
              name='textCtrl1', parent=self.panel1, pos=wx.Point(88, 344),
              size=wx.Size(48, 21), style=0, value='')
        self.textCtrl1.SetEditable(False)

        self.button5 = wx.Button(id=wxID_CAMBIOPRECIOBUTTON5,
              label='Guarda y NO imprime', name='button5', parent=self.panel1,
              pos=wx.Point(488, 376), size=wx.Size(128, 23), style=0)
        self.button5.Bind(wx.EVT_BUTTON, self.OnGuardarSinImprimir,
              id=wxID_CAMBIOPRECIOBUTTON5)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.listaPTC = set([])
        self.crearGrilla()
        self.verificarInterrupcion()

    def celdasSoloLectura(self,renglon):
        self.grid1.SetReadOnly(renglon,1,True)
        self.grid1.SetReadOnly(renglon,2,True)
        self.grid1.SetReadOnly(renglon,3,True)
        self.grid1.SetReadOnly(renglon,4,True)
        self.grid1.SetReadOnly(renglon,5,True)
        self.grid1.SetReadOnly(renglon,6,True)

    def crearGrilla(self):
        columnas = ["  P.T.C.  ","Cantidad","Nuevo\nprecio"]
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas):
            self.grid1.SetColLabelValue(i, col)
            self.grid1.AutoSizeColumn(i,True)
        columnas = ["Cod.\nSussan","Precio\nVenta","Descripcion","Talle","Color","Grupo","Proveedor"]
        self.grid2.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas):
            self.grid2.SetColLabelValue(i, col)
            self.grid2.AutoSizeColumn(i,True)
        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectCells)
        self.grid2.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)

    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid2.GetNumberCols()):
            self.grid2.AutoSizeColumn(y,True)
            
    def buscarProducto(self,ptc):
        r01 = "SELECT p1.id,p1.codsussan,p2.descri,p1.talle,p1.color,p3.nombre,p4.nombre,p2.preciolt1,p5.idgrupo,p5.nombregrupo,p4.idproveedor \n"
        r02 = "FROM producto_talle_color AS p1, \n"
        r03 = "     productos AS p2, \n"
        r04 = "     colores AS p3, \n"
        r05 = "     proveedor AS p4, \n"
        r06 = "     grupos AS p5 \n"
        r07 = "WHERE p1.id='"+ptc+"' AND p1.codsussan=p2.codsussan AND p1.color=p3.idcolor \n"
        r08 = "      AND p2.proveedor=p4.idproveedor AND p2.grupo=p5.idgrupo\n"
        consultaSQL = r01+r02+r03+r04+r05+r06+r07+r08
        resultado = consultasBD.ordenCruda(consultaSQL)
        if resultado == None or resultado == ():
            return []
        producto = resultado[0]
        datos = []
        datos.append(producto[0])
        datos.append(producto[1])
        datos.append(producto[2])
        datos.append(producto[3])
        datos.append(producto[4]+"/"+producto[5])
        datos.append(producto[10]+"/"+producto[6])
        datos.append(producto[7])
        datos.append(str(producto[8])+"/"+producto[9])
        return datos

    def actualizoListaPTC(self):
        self.listaPTC = set([])
        totalEtiquetas = 0
        for i in xrange(self.grid1.GetNumberRows()):
            ptc = self.grid1.GetCellValue(i,0)
            if ptc != "":
                self.listaPTC.add(ptc)
                try:
                    totalEtiquetas+= int(self.grid1.GetCellValue(i,1))
                except:
                    pass
        self.textCtrl1.SetLabel(str(totalEtiquetas))

    def OnBotonSalir(self, event):
        self.Close()

    def OnGrid1ActualizaCelda(self, event):
        
        fil = self.grid1.GetGridCursorRow()
        col = self.grid1.GetGridCursorCol()
        self.grid1.SetCellAlignment(fil, 1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil, 2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

        if self.grid1.GetCellValue(fil,0) != "" and col == 0:
            ptc = self.grid1.GetCellValue(fil,0)
            if ptc in self.listaPTC: 
                #ya existe este producto en algun otro renglon
                utiles.mensaje(None,"PTC ya ingresado")
                self.grid1.SetCellValue(fil,0,"")
                self.OnGrid1ActualizaCelda(None)
                return
            datos = self.buscarProducto(ptc)
            if datos == []:
                utiles.mensaje(None,"PTC inexistente")
                self.grid1.SetCellValue(fil,0,"")
                self.grid1.SetCellValue(fil,1,"")
                self.grid1.SetCellValue(fil,2,"")
                self.grid2.SetCellValue(fil,0,"")
                self.grid2.SetCellValue(fil,1,"")
                self.grid2.SetCellValue(fil,2,"")
                self.grid2.SetCellValue(fil,3,"")
                self.grid2.SetCellValue(fil,4,"")
                self.grid2.SetCellValue(fil,5,"")
                self.grid2.SetCellValue(fil,6,"")
                self.grid1.SetFocus()
                return
            self.grid2.SetCellValue(fil,0,datos[1]) #cod sussan
            self.grid2.SetCellAlignment(fil, 0, wx.ALIGN_CENTER, wx.ALIGN_CENTRE)
            self.grid2.SetCellValue(fil,1,str(datos[6])) #precio venta
            self.grid2.SetCellAlignment(fil, 1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid2.SetCellValue(fil,2,datos[2]) #descripcion
            self.grid2.SetCellValue(fil,3,datos[3]) #talle
            self.grid2.SetCellValue(fil,4,datos[4]) #color
            self.grid2.SetCellValue(fil,5,datos[7]) #grupo
            self.grid2.SetCellValue(fil,6,datos[5]) #proveedor
            self.grid1.SetCellValue(fil,1,"")
            self.grid1.SetCellValue(fil,2,"")
            self.ajustarAnchoColumnas()
            self.almacenamientoTemporal(fil)
            self.actualizoListaPTC()
            return

        if fil<(self.grid1.GetNumberRows()-1):
            if self.grid1.GetCellValue(fil,0) == "":
                #grilla1 - precios nuevos
                self.grid1.SetCellValue(fil,0,"")
                self.grid1.SetCellValue(fil,1,"")
                self.grid1.SetCellValue(fil,2,"")
                #grilla2 - descripcion del producto
                self.grid2.SetCellValue(fil,0,"")
                self.grid2.SetCellValue(fil,1,"")
                self.grid2.SetCellValue(fil,2,"")
                self.grid2.SetCellValue(fil,3,"")
                self.grid2.SetCellValue(fil,4,"")
                self.grid2.SetCellValue(fil,5,"")
                self.grid2.SetCellValue(fil,6,"")
                self.grid1.SetFocus()
                self.almacenamientoTemporal(fil,True)
                self.actualizoListaPTC()
                if fil==(self.grid1.GetNumberRows()):
                    print "Ultima fila"
                    self.grid1.AppendRows()
                    self.grid2.AppendRows()
                return
            self.almacenamientoTemporal(fil)
            self.actualizoListaPTC()
            return

        if self.grid1.GetCellValue(fil,0) == "" and \
           self.grid2.GetCellValue(fil,0) != "":
            #grilla1 - precios nuevos
            self.grid1.SetCellValue(fil,0,"")
            self.grid1.SetCellValue(fil,1,"")
            self.grid1.SetCellValue(fil,2,"")
            #grilla2 - descripcion del producto
            self.grid2.SetCellValue(fil,0,"")
            self.grid2.SetCellValue(fil,1,"")
            self.grid2.SetCellValue(fil,2,"")
            self.grid2.SetCellValue(fil,3,"")
            self.grid2.SetCellValue(fil,4,"")
            self.grid2.SetCellValue(fil,5,"")
            self.grid2.SetCellValue(fil,6,"")
            self.grid1.SetFocus()
            self.almacenamientoTemporal(fil,True)
            self.actualizoListaPTC()
            if fil==(self.grid1.GetNumberRows()):
                #ultima fila
                self.grid1.AppendRows()
                self.grid2.AppendRows()
            return
        
##        if self.grid1.GetCellValue(fil,0) != "" and \
##           self.grid1.GetCellValue(fil,1) != "" and \
##           self.grid1.GetCellValue(fil,2) != "":
        self.grid1.AppendRows()
        self.grid2.AppendRows()

        self.almacenamientoTemporal(fil)
        self.actualizoListaPTC()

    def OnGrid2DobleClickIzquierdo(self, event):
        fil = self.grid2.GetGridCursorRow()

    def OnGrid2DobleClickDerecha(self, event):
        fil = self.grid2.GetGridCursorRow()
        if fil==(self.grid2.GetNumberRows()-1):
            return
        self.grid1.DeleteRows(fil)
        self.grid2.DeleteRows(fil)
        self.ajustarAnchoColumnas()
        self.almacenamientoTemporal(fil,True)
        self.actualizoListaPTC()
        self.grid1.SetFocus()
        
    def OnBotonGuardar(self, event):
        self.button1.Enable(False)
        self.button2.Enable(False)
        self.button5.Enable(False)
        self.grid1.EnableEditing(False)
        self.button3.SetFocus()
        fecha = utiles.obtenerFecha("Y-m-d")

        try:
            consultasBD.begin()

            for fil in xrange(int(self.grid1.GetNumberRows())):
                if self.grid1.GetCellValue(fil,0) == "":
                    continue
                ptc = self.grid1.GetCellValue(fil,0)
                precioNuevo = self.grid1.GetCellValue(fil,2)
                codsussan = self.grid2.GetCellValue(fil,0)
                precioViejo = self.grid2.GetCellValue(fil,1)

                SQL = "UPDATE productos SET preciolt1=%s WHERE codsussan='%s'" % (precioNuevo,codsussan)
                sincronizar_tabla.addChange(sql=SQL)
                consultasBD.executaSinCommit(self,SQL)

                SQL2 = "INSERT INTO cambiosprecios VALUES ('','%s','%s','%s','%s','1','%s')" % (ptc,codsussan,precioViejo,precioNuevo,fecha)
                sincronizar_tabla.addChange(sql=SQL2)
                consultasBD.executaSinCommit(self,SQL2)

            consultasBD.commit()
            sincronizar_tabla.syncServerTables(self, ["cambiosprecios","productos"])

        except sincronizar_tabla.SyncError:
            utiles.mensaje(self, "El precio se modifico \n pero no termino de transmitirse por favor realize un sincronizacion")
        except Exception, e:
            print e.__str__()
            utiles.mensaje(self, "NO se pudo modificar el precio")
            consultasBD.rollback()
            return
        
        utiles.mensaje(None, "PRECIOS MODIFICADOS")
        self.imprimirLaser()

    def almacenamientoTemporal(self,fila,borrar=False):
        f=open("CambiosPrecios.txt","a")
        if not borrar:
            cadena = str(fila)+"[;]"
            for item in xrange(self.grid1.GetNumberCols()):
                cadena+= str(self.grid1.GetCellValue(fila,item))+"[;]"
            for item in xrange(self.grid2.GetNumberCols()):
                cadena+= str(self.grid2.GetCellValue(fila,item))+"[;]"
            cadena = cadena[:-3]+"\n"
        else:
            cadena = "-1[;]"+str(fila)+"\n"
        f.write(cadena)
        f.close()

    def OnBotonLimpiar(self, event):
        self.grid1.ClearGrid()
        self.grid2.ClearGrid()
        while self.grid1.GetNumberRows()>1:
            self.grid1.DeleteRows()
            self.grid2.DeleteRows()
        try:
            os.remove("CambiosPrecios.txt")
        except:
            print "Archivo temporal inexistente"
        self.verificarInterrupcion()
        self.actualizoListaPTC()        
        self.button1.Enable(True)
        self.button2.Enable(True)
        self.grid1.EnableEditing(True)
        self.grid1.SetFocus()

    def verificarInterrupcion(self):
        if not os.path.isfile("CambiosPrecios.txt"):
            f=open("CambiosPrecios.txt","w")
            f.close()
            print "Almacenamiento de Cambios de Precios iniciado"
            return
        #existe archivo, por lo tanto un corte interrumpio la carga y se debe recuperar la informacion
        print "Restaurando ultimo Cambio de Precios"
        f=open("CambiosPrecios.txt","r")
        lista = f.readlines()
        f.close()
        for item in lista:
            cadena = item.split("[;]")
            if cadena[0]=="-1":
                self.grid1.DeleteRows(int(cadena[1]))
                self.grid2.DeleteRows(int(cadena[1]))
                continue
            try:
                fil = int(cadena[0])
            except:
                continue
            #["  P.T.C.  ","Cantidad","Nuevo\nprecio"]
            #["Cod.\nSussan","Precio\nVenta","Descripcion","Talle","Color","Grupo","Proveedor"]
            #grilla1 - precios nuevos
            self.grid1.SetCellValue(fil,0,cadena[1])
            self.grid1.SetCellValue(fil,1,cadena[2])
            self.grid1.SetCellAlignment(fil, 1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellValue(fil,2,cadena[3])
            self.grid1.SetCellAlignment(fil, 2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            #grilla2 - descripcion del producto
            self.grid2.SetCellValue(fil,0,cadena[4])
            self.grid2.SetCellAlignment(fil, 0, wx.ALIGN_CENTER, wx.ALIGN_CENTRE)
            self.grid2.SetCellValue(fil,1,cadena[5])
            self.grid2.SetCellAlignment(fil, 1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid2.SetCellValue(fil,2,cadena[6])
            self.grid2.SetCellValue(fil,3,cadena[7])
            self.grid2.SetCellValue(fil,4,cadena[8])
            self.grid2.SetCellValue(fil,5,cadena[9])
            self.grid2.SetCellValue(fil,6,cadena[10])
            if fil<(self.grid1.GetNumberRows()-1):
                continue
            self.grid1.AppendRows()
            self.grid2.AppendRows()
            self.ajustarAnchoColumnas()

        self.actualizoListaPTC()

    def OnBotonImprimir(self, event):
        print "Imprimiendo"
        self.imprimirLaser("2")

    def imprimirLaser(self, grilla="1"):
        #configurar impresora de etiquetas Intermec: 
        #-instalar win32print para python: pywin32-216.win32-py2.5.exe
        #-verificar que la impresora Intermec PF8T este instalada, asignarle 
        # un nombre sencillo tal como CodBarra y compartir la impresora.
        #-en una consola DOS escribir: net use lpt1: \\karina\Codbarra /persistent:yes

        def generarImpresion(archivo,datos):
            archivo_salida = open(archivo, 'w')
            archivo_salida.write(datos)
            archivo_salida.close()
            ruta = "type "+archivo+" > prn"
            os.system(ruta)
            archivo_salida = open(archivo, 'w')
            archivo_salida.write("")
            archivo_salida.close()
            return

        #cantidad de etiquetas que hay que imprimir
        totalesEtiqueta=0
        for i in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(i,0)!="":
                totalesEtiqueta+= int(self.grid1.GetCellValue(i,1))
        #cantidad de etiquetas que tiene un producto, en una fila
        cantidad = 0
        #resto Etiquetas que quedan para imprimir
        resto=0
        #cambio Si va a la izq o a la derecha de las impresorasesa 
        cambio=1
        #cerrojo para el if y for
        pasa=0

		#recorre todas la grilla y saca todos los codsussan distintos con sus cantidades
		#para enviar a hacer etiquetas
        for z in xrange(self.grid1.GetNumberRows()):
            if (self.grid1.GetCellValue(z,0) != ""):
                #["  P.T.C.  ","Cantidad","Nuevo\nprecio"]
                #["Cod.\nSussan","Precio\nVenta","Descripcion","Talle","Color","Grupo","Proveedor"]
                print "Generando..."+ self.grid1.GetCellValue(z,0)
                cantidad = int(self.grid1.GetCellValue(z,1))
                codsussan = self.grid2.GetCellValue(z,0)
                descri = self.grid2.GetCellValue(z,2)
                talle = self.grid2.GetCellValue(z,3).upper()
                color = self.grid2.GetCellValue(z,4).split("/")[0]
                proveedor = self.grid2.GetCellValue(z,6).split("/")[0]
                if grilla == "2":
                    precioVenta = str(Decimal(self.grid2.GetCellValue(z,1)).quantize(Decimal('0.10')))
                else:
                    precioVenta = str(Decimal(self.grid1.GetCellValue(z,2)).quantize(Decimal('0.10')))
                nombreColor = self.grid2.GetCellValue(z,4).split("/")[1]
                id_producto_talle_color = self.grid1.GetCellValue(z,0)
            
                for x in xrange(cantidad):
                    print "Linea",z,"Etiquetas",x
                    if (cambio==1): 
                        txt_file = open("sus3.txt", 'r')
                        self.txt = txt_file.read()
                        txt_file.close()
                        self.txt = self.txt.replace("$descrip1",descri[:20])
                        self.txt = self.txt.replace("$talle1",talle)
                        self.txt = self.txt.replace("$color1",color)
                        self.txt = self.txt.replace("$codsus1",codsussan)
                        self.txt = self.txt.replace("$ptc1",id_producto_talle_color)
                        self.txt = self.txt.replace("$proveedor1",proveedor)
                        self.txt = self.txt.replace("$precio1","$" + str(precioVenta))
                        self.txt = self.txt.replace("$descrico1",str(nombreColor[:20]))
                        cambio=2
                        totalesEtiqueta=totalesEtiqueta-1
                        if totalesEtiqueta==0:
                            generarImpresion('etiqueta1_reemplazada.txt',self.txt)
                    else:
                        self.txt = self.txt.replace("$descrip2",descri[:20])
                        self.txt = self.txt.replace("$talle2",talle)
                        self.txt = self.txt.replace("$color2",color)
                        self.txt = self.txt.replace("$codsus2",codsussan)
                        self.txt = self.txt.replace("$ptc2",id_producto_talle_color)
                        self.txt = self.txt.replace("$proveedor2",proveedor)
                        self.txt = self.txt.replace("$precio2","$" + str(precioVenta))
                        self.txt = self.txt.replace("$descrico2",str(nombreColor[:20]))
                        cambio=1
                        totalesEtiqueta=totalesEtiqueta-1
                        if totalesEtiqueta==0 :
                            generarImpresion('etiqueta1_reemplazada.txt',self.txt)
                            print "Salio x break"
                            break # sale porque termina, por ejemplo , cuando son 2 o 4 etiquetas
                        #sigue imprimiendo porque faltan mas etiquetas del mismo codsussan
                        generarImpresion('etiqueta1_reemplazada.txt',self.txt)
                        print "Final etiqueta 2"
        generarImpresion('etiqueta1_reemplazada.txt',self.txt)
        #fin impresion con laser

    def OnGuardarSinImprimir(self, event):
        self.button1.Enable(False)
        self.button2.Enable(False)
        self.button5.Enable(False)
        self.grid1.EnableEditing(False)
        self.button3.SetFocus()
        fecha = utiles.obtenerFecha("Y-m-d")

        try:
            consultasBD.begin()

            for fil in xrange(int(self.grid1.GetNumberRows())):
                if self.grid1.GetCellValue(fil,0) == "":
                    continue
                ptc = self.grid1.GetCellValue(fil,0)
                precioNuevo = self.grid1.GetCellValue(fil,2)
                codsussan = self.grid2.GetCellValue(fil,0)
                precioViejo = self.grid2.GetCellValue(fil,1)

                SQL = "UPDATE productos SET preciolt1=%s WHERE codsussan='%s'" % (precioNuevo,codsussan)
                sincronizar_tabla.addChange(sql=SQL)
                consultasBD.executaSinCommit(self,SQL)

                SQL2 = "INSERT INTO cambiosprecios VALUES ('','%s','%s','%s','%s','1','%s')" % (ptc,codsussan,precioViejo,precioNuevo,fecha)
                sincronizar_tabla.addChange(sql=SQL2)
                consultasBD.executaSinCommit(self,SQL2)

            consultasBD.commit()
            sincronizar_tabla.syncServerTables(self, ["cambiosprecios","productos"])

        except sincronizar_tabla.SyncError:
            utiles.mensaje(self, "El precio se modifico \n pero no termino de transmitirse por favor realize un sincronizacion")
        except Exception, e:
            print e.__str__()
            utiles.mensaje(self, "NO se pudo modificar el precio")
            consultasBD.rollback()
            return
        
        utiles.mensaje(None, "PRECIOS MODIFICADOS")
